package com.snow.springboot.util;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author maoyl05
 * @version V2.3
 * @ClassName: MultiTaskPool
 * @Description: 构造多线程执行队列对象
 * @date: 2015年12月21日
 */
public class MultiTaskPool {
    // 执行任务的线程池
    private static ExecutorService executor = null;

    // 使用单实例模式
    private static class LazyHolder {
        private static final MultiTaskPool INSTANCE = new MultiTaskPool();
    }

    // 获取当前实例
    public static final MultiTaskPool getInstance() {
        return LazyHolder.INSTANCE;
    }

    /**
     * @Description: 构造函数
     */
    private MultiTaskPool() {
        // 线程池
        executor = Executors.newFixedThreadPool(50);
    }

    /**
     * 线程池执行任务方法
     *
     * @param job 可被执行的任务信息
     */
    public void executeJob(Runnable job) {
        executor.execute(job);
    }

    /**
     * 线程池执行任务方法
     *
     * @param job 可被执行的任务信息
     */
    public Object executeCallable(Callable job) {
        return executor.submit(job);
    }
}
